package controller;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import model.Usuario;
import java.util.List;
import service.UsuarioService;
import funcion.enviarMail;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

/**
 * @author Fátima Pestana
 * @author Geral Zerpa
 */

/*
 * Control de recuperacion de cuentas usuario registradas en hayTour
 * Solicita de la vista el correo y el username para recuperar la contraseña
 * Se envian los datos por correo Electronico.
 */
public class RecuperarIngreso extends AbstractCommandController {

    private enviarMail enviarmail;
    private UsuarioService usuarioService;
    private static Logger loggers = null;

    public void setUsuarioService(UsuarioService usuarioService) {
        this.usuarioService = usuarioService;
    }

    public RecuperarIngreso() {
        this.setCommandClass(Usuario.class);
        loggers = Logger.getLogger(Usuario.class.getName());
        loggers.setLevel(Level.ALL);
        DOMConfigurator.configure("C:/Documents and Settings/Administrador/Escritorio/HayTour - Repositorio/hayTourViajes/src/java/main/resources/log4j.xml");
    }

    @Override
    protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object form, BindException errors) throws Exception {
        Map model = new HashMap();

        Usuario usuario = (Usuario) form;
        Usuario user2;
        String username;
        String username2;
        String correo2;
        correo2 = request.getParameter("correo");
        username = request.getParameter("username1");
        List user;
        user = usuarioService.getUsuarioLogin(request.getParameter("correo"));


        if (user.isEmpty()) {
            request.getSession().setAttribute("usuarioList", null);
            model.put("cuenta", "  Verifique la Cuenta e-mail. La que ingreso no se encuentra Registrada");
            return new ModelAndView("olvidoIngreso", model);
        } else {
            user2 = (Usuario) user.get(0);
            logger.info("Recuperando Contraseña del Usuario " + user2.getUsername());
            username2 = user2.getUsername();

            if (username.equals(username2)) {
//                enviarmail.setMensaje(correo2, "Recuperación de clave", "\n"
//                        + "     Estimado: " + user2.getNombre() + " usted a solicitado el reenvio de sus datos de acceso a hayTour el Diario de un Viajero. \n\n"
//                        + "        Su Correo Registrado es: " + user2.getCorreo() + "\n"
//                        + "        Su Username es: " + user2.getUsername() + "\n"
//                        + "        Su Clave de Ingreso es: " + user2.getClave());
          request.getSession().setAttribute("usuarioList", null);
                model.put("cuenta", "  Se le a enviado un correo a su Cuenta e-mail con los datos solicitados");
                return new ModelAndView("home", model);
            } else {
                request.getSession().setAttribute("usuarioList", null);
                model.put("cuenta", "  Los Datos Suministrados no son Correctos. Intente de nuevo.");
                model.put("usuario", usuario);
                return new ModelAndView("olvidoIngreso", model);
            }

        }
    }
}
